package com.aynu.common.valid;

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.constraints.NotBlank;
import java.lang.annotation.*;

/**
 * @author mj
 * @version 1.0
 * @date 2020/6/25 7:53
 */
//Documented注解表明这个注解是由 javadoc记录的，在默认情况下也有类似的记录工具。 如果一个类型声明被注解了文档化，它的注解成为公共API的一部分。
@Documented
//@Constraint使用哪个校验器，如果不指定，就在初始化的时候指定
@Constraint(validatedBy = {ListValueConstraintValidator.class})
//@Target注解可以标注在哪些位置 （FIELD：属性）
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR,
        ElementType.PARAMETER, ElementType.TYPE_USE})
//@Retention，这个注解可以在运行时获取到
@Retention(RetentionPolicy.RUNTIME)
//@Repeatable 可重复注解
//@Repeatable(NotBlank.List.class)
public @interface ListValue {
    //前三个方法，是必须的
    String message() default "{com.aynu.common.valid.ListValue.message}";//在配置文件--ValidationMessages.properties--中找信息

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    int[] vals() default {};
}
